module top_module ( 
    input clk, 
    input [7:0] d, 
    input [1:0] sel, 
    output [7:0] q 
);
  
    reg [7:0]	q2;
    reg [7:0]	q1;
    reg [7:0]	q0;
    
    always @(*) begin
    	case(sel)
    		2'b00:	q = d;
        	2'b01:	q = q0;
        	2'b10:	q = q1;
        	2'b11:	q = q2;
    	endcase
    end
    
    my_dff8 u_my_dff8_0(
        .clk(clk),
        .d(d),
        .q(q0)
    );
    
    my_dff8 u_my_dff8_1(
        .clk(clk),
        .d(q0),
        .q(q1)
    );
    
    my_dff8 u_my_dff8_2(
        .clk(clk),
        .d(q1),
        .q(q2)
    );
    
endmodule
